package cn.marinda.config;

import cn.marinda.MinecraftServerHelper;
import cn.marinda.entity.Server;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 服务器配置属性
 *
 * @author admin
 * @date 2022/07/25
 */
public class PropertiesServerConfig extends AbstractServerConfiguration{

    public static PropertiesServerConfig instace = new PropertiesServerConfig();

//    属性值保留
    private Object value;

    /**
     * 服务器配置属性
     */
    private PropertiesServerConfig(){
        super(new File(Server.SERVER_RESET_SERVER.getPath(),"server.properties"));
        readFileConfig();
    }


    /**
     * 查询用户选择得Map中的属性值
     *
     * @param key 关键
     * @return {@link Object}
     */
    public void replaceSelectPropertiesValue(String key){
        for(String keys : selectPropertiesMap.keySet()){
            if(keys.equalsIgnoreCase(key)){
                boolean flag = selectPropertiesMap.get(key);
                configReplace(key,flag);
            }
        }
    }

    /**
     * 找到设置属性值
     *
     * @param key 关键
     * @return {@link Object}
     */
    public void replaceSettingPropertiesValue(String key){
        settingPropertiesMap.keySet().stream().forEach(ele->{
            if(key.equalsIgnoreCase(ele)){
                String value = settingPropertiesMap.get(key);
                configReplace(key,value);
            }
        });
    }

    @Override
    public void immitConfig() {
        loadSelectInfo();

    }

    /**
     * 加载选中数据！
     */
    private void loadSelectInfo(){
        for(String key : configMap.keySet()){
            replaceSelectPropertiesValue(key);
            replaceSettingPropertiesValue(key);
        }
        writeFileConfig();
    }

    /**
     * 配置替换
     *
     * @param element 元素
     * @param value   价值
     */
    private void configReplace(String element,Object value){
        if(value != null || value != null){
            configMap.replace(element,value);
        }

    }
}
